package com.fjh.controller;

import com.fjh.pojo.User;
import com.fjh.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Optional;

@Controller
@RequestMapping("/users")
public class UserController {

    @Autowired
    private UserService userService;

    // 新增用户
    @PostMapping
    public User addUser(@RequestBody User user) {
        return userService.addUser(user);
    }

    // 根据用户名或ID查询用户
    @GetMapping("/{keyword}")
    public Optional<User> findUser(@PathVariable String keyword) {
        return userService.findUser(keyword);
    }

    // 获取所有用户
    @GetMapping
    public List<User> getAllUsers() {
        return userService.getAllUsers();
    }

    @GetMapping("/login")
    public String showLoginForm(Model model) {
        model.addAttribute("user", new User());
        return "login";
    }

    // UserController 中的登录方法
    @PostMapping("/login")
    public String login(@ModelAttribute("user") User user, HttpSession session) {
        // 根据用户输入的用户名从数据库中获取用户信息
        User dbUser = userService.findUser(user.getLoginName()).orElse(null);

        // 验证用户密码是否正确
        if (dbUser != null && dbUser.getPassword().equals(user.getPassword())) {
            // 登录成功，将用户信息存储在会话中
            session.setAttribute("loggedInUser", dbUser);
            return "redirect:/activities/query-activities";
        } else {
            // 登录失败，可以进行相应的处理，例如跳转到登录页面并显示错误消息
            return "redirect:/users/login?error";
        }
    }

    @InitBinder
    public void initBinder(WebDataBinder binder) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
        binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
    }

    @GetMapping("/register")
    public String showRegistrationForm(Model model) {
        model.addAttribute("user", new User());
        return "register";
    }

    @PostMapping("/register")
    public String register(@ModelAttribute("user") User user) {
        // 实现用户注册逻辑
        userService.addUser(user);
        // 注册成功后重定向到登录页面
        return "redirect:/users/login";
    }

    @GetMapping("/success")
    public String successPage() {
        // 处理成功页面的逻辑，返回对应的 Thymeleaf 模板
        return "success";
    }

    @GetMapping("/logout")
    public String logout(HttpSession session) {
        // 实现注销逻辑，使会话失效等。
        return "redirect:/users/login"; // 修改重定向路径为 /users/login
    }
}
